# encoding=utf-8
# author:梁子龙
from comment.modules import db
from datetime import datetime
from werkzeug.security import generate_password_hash, check_password_hash

class User(db.Model):
    __tablename__ = 't_user'
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    username = db.Column(db.String(64), comment='用户名')
    nick_name = db.Column(db.String(64), comment='昵称')
    password = db.Column(db.String(256), comment='密码')
    email = db.Column(db.String(100), comment='邮箱')
    phone = db.Column(db.String(100), comment='电话')
    onlock = db.Column(db.Integer, comment='是否离职', default=0)  # 0正常，1、是离职
    role = db.Column(db.Integer, comment='是否是管理员', default=2)  # 1.管理员，2.普通用户
    description = db.Column(db.String(256), comment='描述')
    avatar = db.Column(db.String(128), comment='头像')
    create_time = db.Column(db.DateTime, default=datetime.now(), comment='创建时间')
    update_time = db.Column(db.DateTime, default=datetime.now(), onupdate=datetime.now(), comment='更新时间')
    article_id = db.Column(db.String(100), comment='文章id')

    # 定义pwd的getter函数
    @property
    def pwd(self):
        return self.password  # 加密之后的密文

    # 定义pwd的setter函数
    @pwd.setter
    def pwd(self, x_password):
        '''
        根据明文的密码，加密得到密文
        :param x_password: 密码的明文
        :return: 加密之后的密文
        '''
        self.password = generate_password_hash(x_password)  # 根据flask提供的算法来加密

    def check_password(self, x_password):
        '''
        验证密码是否正确
        :param x_password: 密码的明文
        :return:
        '''
        return check_password_hash(self.password, x_password)


